#ifndef TABLA_H_
#define TABLA_H_

#include <string>
#include <vector>
#include <fstream>
#include "../Archivos/ArchivoDeEstructurasFijas.h"
#include "../Archivos/ArchivoTablasHash.h"
#include "../Entidades/IEntidad.h"
using namespace std;
using namespace Archivos;
using namespace Entidades;

class Tabla : public IEntidad {

private:
	    //Atributos
		ArchivoTablasHash* archivoTabla;
        int tamanio;
		int* tabla;
        bool nueva;

        //Metodos
        void guardar();
        void leer();

public:
        Tabla(string path);
        Tabla(int numeroCubetaInicial, string path);

        int getTamanio();// const;
        void setTamanio(int tamanio);
        int* getTabla();
        void setTabla(int* tabla);
        int getElementoEn(int posicion);
        void setElementoEn(int posicion, int elemento);
		bool esNueva() const;
		
        void truncar();
        void duplicar();
        void actualizar(int posicion, int td, int numeroCubeta);

        virtual void hidratarse(char* buffer, unsigned int tamanioDelBuffer);
        virtual char* construirBuffer();
        virtual unsigned int getTamanioDelBuffer();
        virtual void marcarComoBorrado();

        virtual ~Tabla();
};

#endif /* TABLA_H_ */
